Systems that utilize a single server for storing information that is accessed by one or more clients generally do not have issues with generating unique identifiers for objects, e.g., files. However, when systems expand to include, for example, a server cluster with a number of servers, there must be some mechanism in place for ensuring that files or other objects have identifiers that are unique within the server cluster. As can be appreciated, if one server in the server cluster fails, the other servers must be able to carry the load of the failed server. Having unique identifiers ensures that a client, which previously accessed the failed server, can send the identifier to any server in the server cluster and access the same object or file. Also, it is not practical from a performance perspective to implement a system that checks every identifier among all the nodes in a cluster before generating the identifier.
In addition, the cluster, and the servers within the cluster, may be configured to communicate with clients using a predetermined set of protocols. Thus, in addition to having to generate identifiers that are unique across a server cluster, the identifiers have to meet the requirements of the protocols such as specific structure, size, format, etc. as dictated by the protocols.
It is with respect to these and other considerations that embodiments have been made. Also, although relatively specific problems have been discussed, it should be understood that the embodiments should not be limited to solving the specific problems identified in the background.